package modelo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class ManejadorDeArchivos {

	public static void guardarPartida(String nombre,String datos) throws IOException {
		String rutaAuxiliar = "partidas/temp.txt";
		String ruta="partidas/" +nombre + ".txt";
		String cadena;
		File archivo = new File(ruta);
        BufferedWriter escribidor;
        BufferedReader lector;
        escribidor = new BufferedWriter(new FileWriter(archivo));
        escribidor.write(datos);
        escribidor.close();
        escribidor=new BufferedWriter(new FileWriter(new File(rutaAuxiliar)));
        lector = new BufferedReader(new FileReader(archivo));
        while((cadena = lector.readLine())!=null) {
        	cadena = cadena.replaceAll("\\{", "\\{\r\n"); //ajuste para pretty printing
            cadena=cadena.replaceAll("\\}", "\r\n\\}");
            cadena=cadena.replaceAll(",",",\r\n");
            escribidor.write(cadena);
            escribidor.write("\r\n");
        }
        lector.close();
        escribidor.close();
        arreglarPrinting(ruta); 		
	}
	private static void arreglarPrinting(String ruta) throws IOException {
        String rutaInicial = "partidas/temp.txt";
        String cadena="";
        int tan=0;
        String tabs;
        File archivo = new File(rutaInicial);
        BufferedWriter escritor =new BufferedWriter(new FileWriter(new File(ruta)));
        BufferedReader lector = new BufferedReader(new FileReader(archivo));
        while((cadena = lector.readLine())!=null) {
                if(cadena.contains("}")){
                if(tan>=1){
                        tan--;
                }
        }
                tabs=getTabs(tan);
        tabs+=cadena;                   
        if(cadena.contains("{")){
                tan++;
        }
        
        escritor.write(tabs);
        escritor.write("\r\n");
        }
        escritor.close();
        lector.close();
	}
	 private static String getTabs(int tan) {
         String tanDev="";
         for(int i=0;i<tan;i++){
                 tanDev+="\t";
         }
         return tanDev;
	 }
	public static String cargar(String nombre) throws IOException {
		 String cadena;
         String archivo="partidas/" + nombre + ".txt";
         FileReader f;
         String jug="";
         f = new FileReader(archivo);
         BufferedReader lector = new BufferedReader(f);
         while((cadena = lector.readLine())!=null) {
                 jug+=cadena;
         }
         lector.close();
         jug=jug.replaceAll("\t", "");
         return jug;
		
	}
	public static void agregarALaListaDePartidas(String nombre) throws IOException {
		String rutaInicial="partidas/partidas.txt";
        File archivo = new File(rutaInicial);
        String cadena="";
        String partidas="";
        BufferedReader lector=new BufferedReader(new FileReader(archivo));      
        while((cadena = lector.readLine())!=null) {
                partidas+=cadena;
                partidas+="\r\n";
               
        }
        lector.close();
        if(!partidas.contains(nombre+"\r\n")){
                BufferedWriter escritor = new BufferedWriter(new FileWriter(archivo));
                partidas+=nombre;
                escritor.write(partidas);
                escritor.close();
        }
		
	}
	public static String obtenerPartidas() throws IOException {
		String ruta="partidas/partidas.txt";
		File archivo = new File(ruta);
		String cadena="";
		String partidas="";
		BufferedReader b=new BufferedReader(new FileReader(archivo));	
		while((cadena = b.readLine())!=null) {
			partidas+=cadena;
			partidas+="\n";
		}
		b.close();
		return partidas;
	}

}
